Crate run_script[−][src]
Expand description
run_script
Run shell scripts in rust.
This library enables to invoke shell scripts based on their content.
While std::process::Command works great to execute standalone command, you need more manual code to take a script
text and execute it.
For this purpose, this library was created.
Examples
Basic Example
use run_script::ScriptOptions;
fn main() {
let options = ScriptOptions::new();
let args = vec![];
// run the script and get the script execution output
let (code, output, error) = run_script::run(
r#"
echo "Directory Info:"
dir
"#,
&args,
&options,
)
.unwrap();
println!("Exit Code: {}", code);
println!("Output: {}", output);
println!("Error: {}", error);
// run the script and get a handle to the running child process
let child = run_script::spawn(
r#"
echo "Directory Info:"
dir
"#,
&args,
&options,
)
.unwrap();
let spawn_output = child.wait_with_output().unwrap();
println!("Success: {}", &spawn_output.status.success());
}
Macro Examples
use run_script::ScriptOptions;
fn main() {
// simple call to run script with only the script text
let (code, output, error) = run_script::run_script!(
r#"
echo "Test"
exit 0
"#
)
.unwrap();
println!("Exit Code: {}", code);
println!("Output: {}", output);
println!("Error: {}", error);
// run script invoked with the script text and options
let options = ScriptOptions::new();
let (code, output, error) = run_script::run_script!(
r#"
echo "Test"
exit 0
"#,
&options
)
.unwrap();
println!("Exit Code: {}", code);
println!("Output: {}", output);
println!("Error: {}", error);
// run script invoked with all arguments
let options = ScriptOptions::new();
let (code, output, error) = run_script::run_script!(
r#"
echo "Test"
exit 0
"#,
&vec!["ARG1".to_string(), "ARG2".to_string()],
&options
)
.unwrap();
println!("Exit Code: {}", code);
println!("Output: {}", output);
println!("Error: {}", error);
// spawn_script! works the same as run_script! but returns the child process handle
let child = run_script::spawn_script!(
r#"
echo "Test"
exit 0
"#
)
.unwrap();
println!("PID: {}", child.id());
}
Installation
In order to use this library, just add it as a dependency:
[dependencies]
run_script = "*"
Contributing
License
Developed by Sagie Gur-Ari and licensed under the Apache 2 open source license.
Modules
types
Macros
Enables to invoke the run_script::run function more easily without providing all input.
Enables to invoke the run_script::run_or_exit function more easily without providing all input.
Enables to invoke the run_script::spawn function more easily without providing all input.
Functions
Invokes the provided script content and returns the invocation output.
Invokes the provided script content and returns the invocation output. In case of invocation error or error exit code, this function will exit the main process.
Invokes the provided script content and returns a process handle.
Type Definitions
Io Options available for invoking the script
Error struct
Options available for invoking the script